// ignore_for_file: unnecessary_type_check, unnecessary_null_comparison

main() {
  // 1. 算数运算符
  /*
  int a=13;
  int b=5;
  print(a+b);   //加
  print(a-b);   //减
  print(a*b);   //乘
  print(a/b);   //除
  print(a%b);   //其余
  print(a~/b);  //取整

  print(a==b);   //判断是否相等
  print(a!=b);   //判断是否不等
  print(a>b);   //判断是否大于
  print(a<b);   //判断是否小于
  print(a>=b);   //判断是否大于等于
  print(a<=b);   //判断是否小于等于
  */

  // 2. 逻辑运算符 和js 一样
  // 取反 !
  // 且 &&
  // 或 ||

  // 3. 赋值运算符
  // = +=  -=  *=   /=   %=  ~/= 赋值 同于js
  // ??=  表示如果变量为空的话把值赋值给该变量
  /*
  var a;
  a ??= 23;
  print(a); // 23

  var b = 6;
  b ??= 23;
  print(b); //6
  */

  // 4. 条件表达式
  // if else   switch break 用法同js
  var sex = "女";
  switch (sex) {
    case "男":
      print('性别是男');
      break;
    case "女":
      print('性别是女');
      break;
    default:
      print('传入参数错误');
      break;
  }

  // 三元表达式 同js

  // ??

  var a;
  var b = a ?? 10;
  print(b); //  10

  // var c = 22;
  // var d = c ?? 10; // 如果给定值 本质上就不应该 ??
  // print(d); // 22

  // 5. 类型转换
  // Number类型转换成String类型 toString()
  // String类型转成Number类型  int.parse()

  // String str = '123';
  // var myNum = int.parse(str);
  // print(myNum is int);

  String str = '123.1';
  var myNum = double.parse(str);
  print(myNum is double);

  // isEmpty:判断字符串是否为空
  var str1 = '';
  if (str1.isEmpty) {
    print('str1空');
  } else {
    print('str1不为空');
  }

  var myNum2;
  if (myNum2 == null) {
    print('空');
  } else {
    print('非空');
  }

  var myNum3 = 0 / 0;
  print(myNum3);
  if (myNum3.isNaN) {
    print('NaN');
  }
}
